﻿using System;
using System.Collections.Generic;

namespace JTLeigh.Commerce.Spencer.Features.ProductImages.Common.Entities
{

	/// <summary>
	/// Represents product image metadata common to all product images.
	/// </summary>
	public class ProductImageMetadata
	{

		#region Constructors

		/// <summary>
		/// Initializes a new instance of the <see cref="ProductImageMetadata"/> class.
		/// </summary>
		public ProductImageMetadata()
		{
			SizesBySizeId = new Dictionary<Guid, ProductImageSize>();
			SizesByWellKnowSizeCode = new Dictionary<byte, ProductImageSize>();
			ViewsByViewId = new Dictionary<Guid, ProductImageView>();
			ViewsByWellKnowViewCode = new Dictionary<byte, ProductImageView>();
		}

		#endregion // Constructors

		#region Properties

		/// <summary>
		/// Gets the dictionary of product image sizes keyed by size identifier.
		/// </summary>
		/// <value>A <see cref="Dictionary{TKey,TValue}"/> of <see cref="ProductImageSize"/> keyed
		/// by size identifier <see cref="Guid"/>.</value>
		public Dictionary<Guid, ProductImageSize> SizesBySizeId { get; private set; }

		/// <summary>
		/// Gets the dictionary of product image sizes keyed by well-known size code.
		/// </summary>
		/// <value>A <see cref="Dictionary{TKey,TValue}"/> of <see cref="ProductImageSize"/> keyed
		/// by well-known size code <see cref="Byte"/>.</value>
		public Dictionary<byte, ProductImageSize> SizesByWellKnowSizeCode { get; private set; }

		/// <summary>
		/// Gets the dictionary of product image views keyed by view identifier.
		/// </summary>
		/// <value>A <see cref="Dictionary{TKey,TValue}"/> of <see cref="ProductImageView"/> keyed
		/// by view identifier <see cref="Guid"/>.</value>
		public Dictionary<Guid, ProductImageView> ViewsByViewId { get; private set; }

		/// <summary>
		/// Gets the dictionary of product image views keyed by well-known view code.
		/// </summary>
		/// <value>A <see cref="Dictionary{TKey,TValue}"/> of <see cref="ProductImageView"/> keyed
		/// by well-known view code <see cref="Byte"/>.</value>
		public Dictionary<byte, ProductImageView> ViewsByWellKnowViewCode { get; private set; }

		#endregion // Properties

	}

}
